package type_conversion;

//变量
public class Variable {
    public static void main(String[] args) {
        //整型
        //整型int
        int a1 = 10;
        int a2;
        a2=11;
        //变量在使用之前要进行赋值，否则会出错
        int a3 ;
        System.out.println(a1);
        System.out.println(a2);
        //int变量能表示的范围
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        //System.out.println(c);

        //字节型byte
        byte b1 = 10;
        //超出范围，编译报错
        //byte b2 = 130;
        System.out.println(b1);
        //System.out.println(b2);
        //byte变量能表示的范围
        System.out.println(Byte.MAX_VALUE);
        System.out.println(Byte.MIN_VALUE);

        //短整型short
        short c1 = 6;
        System.out.println(c1);
        //short变量表示的范围
        System.out.println(Short.MAX_VALUE);
        System.out.println(Short.MIN_VALUE);

        //长整型long
        long d1 = 76;
        //整型变量默认为int类型，为了区分int和long，一般在long类型变量的初始值后加l或者L
        //一般加L更容易区分,l则容易与1混淆
        long d2 = 12l;
        long d3 = 78L;
        //long变量表示的范围
        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);

        System.out.println(Integer.MAX_VALUE+1);//结果为-2147483648，超出int范围，变为最小负数
        System.out.println(Integer.MAX_VALUE+1L);//结果为2147483648，类型转换为long，没有超出范围计算正常

        //浮点型
        //双精度浮点型double
        double e1 = 1.23;
        int n = 1;
        int m = 2;
        System.out.println(n/m);//舍弃小数部分，结果任然是0，而不是0.5
        double n1 = 1.0;
        double m1 = 2.0;
        System.out.println(n1/m1);//结果为0.5

        double num = 1.1;
        System.out.println(num*num);//存在一定的误差，浮点数是近似值而不是精确值

        //单精度浮点型float
        //浮点型变量默认为double类型，为了区分double和float，在float类型变量的初始值后加f或者F
        float p1 = 2.93f;//也可以写为float p1 = 2.93F

        //字符型char
        char k = 'a';
        char k1 = '好';
        char k2 = 'う';
        System.out.println(k);
        System.out.println(k1);
        System.out.println(k2);
        //char类型表示的范围
        System.out.println(Character.MAX_VALUE);
        System.out.println(Character.MIN_VALUE);

        //布尔型boolean
        boolean p = true;
        boolean q = false;
        System.out.println(p);
        System.out.println(q);
        //System.out.println(p+1);错误用法，boolean与int不能进行转换
    }
}
